package cn.iocoder.yudao.module.crm.dal.mysql.task;

import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.crm.controller.admin.task.vo.TaskDetailReqVO;
import cn.iocoder.yudao.module.crm.controller.admin.task.vo.taskcontent.TaskContentDetail;
import cn.iocoder.yudao.module.crm.dal.dataobject.task.TaskContentDO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.stream.Collectors;

/**
 * CRM 任务单内容关联 Mapper
 *
 * @author 广州氪量
 */
@Mapper
public interface TaskContentMapper extends BaseMapperX<TaskContentDO> {
    default List<TaskContentDO> getTaskContentListByTaskId(Long id){
        return selectList(TaskContentDO::getTaskId,id);
    }

    default void batchInsert(List<TaskContentDO> taskContentList){
        insertBatch(taskContentList);
    }

    default void updateBatchByTaskId(TaskDetailReqVO taskDetailReqVO){
        // 将请求对象中的内容详情转换为实体对象列表，并设置taskId
        List<TaskContentDO> taskContentList = taskDetailReqVO.getContent().stream()
                .map(taskContentDetail -> {
                    TaskContentDO taskContentDO = new TaskContentDO();
                    BeanUtils.copyProperties(taskContentDetail, taskContentDO);
                    taskContentDO.setTaskId(taskDetailReqVO.getTaskId());
                    taskContentDO.setDetails(taskContentDetail.getDetail());
                    return taskContentDO;
                })
                .collect(Collectors.toList());

        // 批量更新
        updateBatch(taskContentList);
    }
}